package cn.tedu.apiday05;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

public class CollectionAction {//测试Collection

    public static void main(String[] args) {
        /* 创建对象   使用泛型约束集合中元素的类型 */
        Collection <String> c = new ArrayList<>();//因为接口不能实例化，所以new实现类，多态

        //调用方法
        c.add("1");//向集合中添加元素
        c.add("3");
        c.add("1");
        c.add("4");
        //c.add(123);//添加的元素的类型，没有通过泛型的类型检查，会直接在编译期间报错
        System.out.println(c);//因为底层重写了toString
        System.out.println(c.contains("4"));//判断集合中是否包含指定元素
        System.out.println(c.equals("4"));//判断集合是否和指定元素相等
        System.out.println(c.hashCode());//获取集合在内存中的哈希码值
        System.out.println(c.isEmpty());//判断集合是否为空
        System.out.println(c.size());//获取集合中元素的个数
        System.out.println(c.remove("4"));//移除集合中的指定元素
        Object[] objects = c.toArray();//把集合转成数组
            System.out.println(Arrays.toString(objects));
        //集合间的操作
        Collection <String> c2 = new ArrayList<>();
        c2.add("1");
        c2.add("2");


        System.out.println(c.addAll(c2));//向c集合中加入c2的数据
        System.out.println(c.containsAll(c2));//判断c中是否包含c2的元素
//        System.out.println(c.removeAll(c2));//获取c集合和c2集合的差集
//        System.out.println(c.retainAll(c2));//获取c集合和c2集合的交集
        //集合的遍历/循环/迭代   Iterator是一个接口，专门用来迭代集合里的元素
        Iterator <String> it = c.iterator();
        while (it.hasNext()){//it.hasNext()判断集合里有没有元素，有的话返回true
            String value = it.next();//next()获取元素
            System.out.println(value+"========");
        }
        System.out.println();
        //第2种 增强for循环     foreach循环  用来优化普通的for循环，可以用于遍历数组，或者Collection集合的。好处高效而且语法简洁
        //语法：for(遍历得到的数据类型 变量名 ：你想要遍历的数组或者Collection集合){循环体}
        for (String it1:c) {
            System.out.println(it1);
        }
    }
}
